home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
bbs
/
flst130.zip
/
FASTLST.DOC
< prev
next >
Wrap
Text File
|
1995-04-25
|
118KB
|
3,078 lines
**************************************************************
* *
* *
* ******* ** **** ****** **** **** ****** *
* ** * **** ** ** * ** * ** ** ** * ** * *
* ** * ** ** ** ** ** ** ** *
* **** ** ** **** ** ** **** ** *
* ** * ****** ** ** ** * ** ** *
* ** ** ** ** ** ** ** ** ** ** ** *
* **** ** ** **** **** ******* **** **** *
* *
* *
* Version 1.30 *
* *
* The ultimate V7 nodelist processor *
* *
* *
**************************************************************
* *
* (C) Copyright 1992-1995 by Alberto Pasquale *
* *
* A L L R I G H T S R E S E R V E D *
* *
**************************************************************
FastLst 1.30 User's Manual, by Alberto Pasquale
INTRODUCTION
-> For licensing information, please see License.Doc.
Thanks for evaluating FastLst: the ultimate "Version 7" nodelist
processor.
Version 7 is a common format for binary nodelists to be used by
mailers, message editors and all the programs that need access
to a compiled nodelist.
Main characteristics:
- Compiles to Version 7 format nodelist.
- Support for old "Fidouser.Lst" sysop list.
- Multiple output nodelist (V7) compilation from one config file.
- The complete maintenance of archived lists and diffs is
achieved through internal flexible configuration, with no need
for clumsy batch files.
- Uses "Squish(*) Style" Compress.Cfg.
- Can be invoked from a batch file at predefined events: the
compilation will take place only if some new list/diff is found.
- The 32 bit versions can use "in memory" mode to accomplish
blazing speed on systems with enough memory or "temporary
file" mode to avoid very slow operations in compiling large
nodelists on systems with little physical memory.
- Multitasking friendly
- The OS/2 32 bit version allows for priority setting in the
configuration file.
- Compilation reports can be posted to Fido or Squish format
message areas.
- Full 4D (point) support, both via the "Point,..." and
"Boss,..." keywords.
- Internal support for "German type" pointlists.
- Easy addition of nodes via the "Node,<address>,..." keyword
in a private list.
- In the case of SysOps of multiple nodes, keeps in the sysop
lists (fidouser.lst and sysop.ndx) all the name/address
entries. Allows to keep one address only for specified
ones.
- User Cost (Msg Fee) can be set different from Call Cost.
(*) This program uses the Squish "MsgAPI" code,
Copyright 1991-1994 by SCI Communications.
"Squish" and Maximus are trademarks of
SCI Communications.
(**) Binkley is Copyright 1988-1994 Bit Bucket Software
(***) 4OS2 is Copyright 1988-1994 JP Software Inc.
The archivers referred to throuhgout this documentation and
the accompanying files are Copyright and/or trademarks of the
respective owners.
OVERALL OPERATION
FastLst has been designed to be invoked regularly from one of
your main batch files, after mail has been received or at
pre-arranged times at your pleasure: if any new (compressed or
not) nodelist/nodediff is detected, Fastlst processes them as
required (exiting with Errorlevel 0), otherwise it immediately
exits (errorlevel 100) with no further delay.
When FastLst detects a changed config or password file, it
compiles all the affected nodelists even if they are not new.
If you want FastLst to compile all of your nodelists even if no
new ones are present, you need to use the -f or -i command line
switch.
For each "output block" in the config file:
- New compressed lists or diffs are detected, unarchived and
optionally rearchived in a different format.
- New diffs are detected and applied: the resulting new nodelist
is archived.
- New lists are detected and the pertinent output nodelists are
rebuilt. If no new list is found for a specific "output
block", that output nodelist is not compiled, unless the -f or
-i command line switch is specified.
OS commands can be issued before or after every operation: for
example you can hatch the just created archive file.
ATTENTION:
- Every time the config file is changed, FastLst rebuilds all
the output nodelists, as if the -f command line switch were
specified.
- Every time a PasswordFile is changed, FastLst rebuilds the
nodelists that use it.
INPUT NODELIST FORMAT
The source nodelists and nodediffs must be in standard "St.
Louis" format, as described in FTS-0005. Anyway, FastLst allows
some extensions in order to support 4D points, "German style"
pointlists and easy single node specifications.
4D Point Support: POINT and BOSS keywords
the input nodelist format in order to support true "4D" points.
First method:
Points are entered in the nodelist directly following their
bossnode. Each one starts with the "Point,<point>" keyword.
Example:
...
...
,504,Videl_3,Modena_I,Roberto_Zanasi,39-59-450600,9600,CM,XA,V32B,V42B
Point,1,Pasquale,Modena_I,Alberto_Pasquale,-!Unpublished-,9600,
Point,2,SysOp,Modena_I,Roberto_Zanasi,-!Unpublished-,2400,
Point,3,Carta,Modena,Francesco_Carta,-!Unpublished-,2400,
...
...
Second method:
Points are entered in the nodelist following the
"Boss,<address>" keyword. Example:
...
...
Boss,2:332/504
,1,Pasquale,Modena_I,Alberto_Pasquale,-!Unpublished-,9600,
,2,SysOp,Modena_I,Roberto_Zanasi,-!Unpublished-,2400,
,3,Carta,Modena,Francesco_Carta,-!Unpublished-,2400,
...
...
German Point List
This is a "normal" 3D nodelist that lists each Boss as a
"fakenet" HOST, with the real address as the system name,
followed by its points listed as nodes.
Example:
The following nodelist segment lists points 2:2400/1.1 .2 .3:
Host,20000,2400/1,City,Sysop_Name,49-951-999999,9600,CM,V34
,1,System_Name_1,City_1,Sysop_Name_1,49-951-999999,9600,
,2,System_Name_2,City_2,Sysop_Name_2,49-951-999999,9600,
,3,System_Name_3,City_3,Sysop_Name_3,49-951-999999,9600,
The NODE Keyword
Another extension over FTS-0005 is provided to allow easy
addition of nodes in small private lists.
When you need to add a node to your nodelist to call it or to
enforce a session password with it, you can use the
"Node,<address>,..." keyword to avoid the necessity of adding
its Zone and Host coordinators.
You should specify a full 4D address (point optional).
Any subsequent entry will take the current address as a starting
point.
E.g.: You want to add 9:8/7.3
With "Node,...":
...
...
Node,9:8/7.3,Mickey,DisneyLand,Mickey_Mouse,1-800-111,9600,CM
...
...
With "Boss,...":
...
...
Boss,9:8/7
,3,Mickey,DisneyLand,Mickey_Mouse,1-800-111,9600,CM
...
...
With the traditional method:
...
...
Zone,9,...
Host,8,...
,7,...
Point,3,Mickey,DisneyLand,Mickey_Mouse,1-800-111,9600,CM
...
...
Now let's add 8:7/6 and 8:7/7:
With "Node,...":
...
...
Node,8:7/6,Mickey,DisneyLand,Mickey_Mouse,1-800-111,9600,CM
,7,Duck,DisneyLand,Donald_Duck,1-800-112,9600,CM
...
...
With the traditional method:
...
...
Zone,8,...
Host,7,...
,6,Mickey,DisneyLand,Mickey_Mouse,1-800-111,9600,CM
,7,Duck,DisneyLand,Donald_Duck,1-800-112,9600,CM
...
...
MISCELLANEOUS INFO
Multiple Sysops
In the case of SysOps of more than one system, all the
name/address couples are put in the SysOp Name Lists
(Fidouser.lst and Sysop.ndx).
If you want to keep one only name/address couple for some
multiple SysOps, you can use the "SysDup <AddrLst>" option in
the config file: the SysOps who have one of the listed addresses
will be present in the SysOp lists with that entry only, even if
they have other addresses.
Example: Let's suppose that Robert Everywhere has 4 nodes:
EveryWhere, Robert 1:456/987.0
EveryWhere, Robert 2:123/457.0
EveryWhere, Robert 2:123/457.8
EveryWhere, Robert 6:321/567.0
By default all the 4 addresses are available in the sysop
lists (and some programs allow to choose among them, e.g.
the excellent TimEd message editor by Gerard van Essen).
If you prefer to keep one address only, you can specify the
desired address in a SysDup line in the config file:
e.g. "SysDup 2:123/457.8".
Redirected Systems
Systems that have no valid phone number (Unpublished, on Hold),
are redirected, provided you do not exclude redirection using
the "NoRedir" config keyword.
A redirected system is given the phone number, baud rate, modem
type, cost and flags of the preceding coordinator, the Board
name is prepended with '-R-'.
If you have a session password with the system to be redirected
or with the system it should be redirected to, no redirection is
done in order to prevent password-mismatch errors in the case
the Unpublished/Hold system calls you.
Points are never redirected.
The systems that have no valid phone number and cannot be
redirected take an EMPTY phone number string, so that your
mailer does not send unexpected strings to your modem attempting
to call these systems, should something appear in your outbound
addressed to them.
Pay attention: if you want to directly call these
null_phone-systems or their coordinators, you have to give them
a phone number using the "Phone <Addr> <NewNumber>" statement in
the configuration file.
INSTALLATION
1) There are 4 versions of FastLst:
FASTLST.EXE OS/2 32 bit
FASTL16.EXE OS/2 16 bit
FASTLDOS.EXE DOS 32 bit, with DOS4GW DOS Extender
FASTLD16.EXE DOS 16 bit
The OS/2 and Dos versions are distributed in separate
archives (see Readme.1st).
OS/2 32 bit:
to be used with OS/2 2.0 and above.
You have only to decide whether to use the "FileMode"
statement in the configuration file. If you have enough
physical memory available you should use the default "in
memory" mode. On the other hand, if the execution of FastLst
is excessively slow, you probably are low on memory and you
could benefit by the use of the temporary file. You can use
the "-t" command line switch to experiment, before enabling
the "FileMode" statement in the configuration file, if really
necessary.
OS/2 16 bit:
to be used with OS/2 1.3.
DOS 32 bit:
to be used with Dos on a 386sx or better with free extended
memory.
If you have enough free extended memory, you can use the
default and fast "in memory" mode (4MB allow the compilation
of approximately 64,000 nodes).
If you do not have enough free memory, you can use the
"temporary file" mode, provided you have 800KB of free
extended memory (see the "-t" command line switch and the
"FileMode" configuration statement).
If you have no free extended memory at all, you have to use
the 16 bit version.
DOS 16 bit:
to be used with Dos on 8088 or better.
The only requirement is 530KB (or better 600KB) of free
conventional memory.
If you can't free enough conventional memory, you must use a
386sx or better with at least 800KB of free extended memory
and use the 32 bit version, which has less stringent
conventional memory requirements.
2) Write your FastLst.Cfg.
You can find useful examples in the Fast_*.Cfg files and
detailed information in the "CFG REFERENCE" section of this
documentation.
3) Edit your batch file in order to call FastLst whenever you
would like to test for the presence of new list/diff files
and process them. If you do not pass a different pathname as
a command line parameter, FastLst.Cfg must reside in the
current directory.
4) (OS/2): Make sure you have the MSGAPI32.DLL (32 bit version)
or MSGAPI.DLL (16 bit version) in a directory contained in
your LIBPATH. MSGAPI32.DLL and MSGAPI.DLL can be found in
the Squish 1.11 archive.
If you have little memory and FastLst runs excessively
slow, try using the "temporary file" mode (see the "-t"
command line switch and the "FileMode" configuration
statement).
(DOS32): Make sure you have the DOS4GW.EXE Dos extender (from
Rational System Inc.) in your path.
The DOS4GW extender requires an XMS or DPMI memory driver
installed in your config.sys: e.g. HIMEM.SYS, QEMM (by
QuarterDeck Office Systems Inc.).
FastLst requires lots of memory to compile long nodelists:
you must make sure that the Dos extender can make it
available to FastLst.
If you need more memory than you physically have, you must
use the "temporary file" mode (see the "-t" command line
switch and the "FileMode" configuration statement).
You could also use the "in memory" mode and activate the
DOS4GW virtual memory mode, but it is not recommended since
it could unacceptably slow down the compilation process.
Anyway, if you really want to test it on your own, the
virtual mode is activated using the DOS4GVM environment
variable (e.g. for 16MB virtual allocation size:
SET DOS4GVM=VirtualSize#16384).
(DOS16): Make sure you have at least 530KB of free
(conventional) memory. You should use small message buffers
(MsgSize statement) in order to avoid out of memory
conditions during the merge-sort process.
(DOS): Please note that FastLst tells you (on screen, in the
logs, in the report message) how much memory remains after
compilation, so that you can realize when you are running
in marginal conditions and consequently adjust your
configuration before you run out of memory.
During the merge-sort process (16 bit and 32 bit in
"temporary file" mode) FastLst automatically uses the
maximum number of ways (up to 8) allowed by the available
memory. The minimum number of ways is obviously 2. So, if
FastLst reports a "2 Way Merging", you know that the final
"MemFree <bytes>" is the actual margin for the "out of
memory" error. On the other hand, if FastLst reports "3 Way
Merging" or more, you know that there is an additional
margin for the "out of memory", approximately 60KB for each
way above the minimum of 2.
COMMAND LINE SWITCHES
-c<cfg>
Use <cfg> configuration file instead of FASTLST.CFG.
-f
Force compilation even if no new list/diff has been
detected.
-i Ignore FastLst.Dat: run as if it were the first time.
All nodelists compiled, all exports executed.
-p
Prepare: Unarc new lists and diffs, Apply diffs and Arc
new nodelists, do not compile nodelists.
-r
When applying a diff, FastLst usually deletes the newly
generated source nodelist file if a CRC error is
detected. With this switch the new nodelist is _not_
deleted, so that it will be processed anyway.
When compiling a list, FastLst usually aborts the
compilation of the current output nodelist if a CRC
error is detected. With this switch the current output
nodelist will be entirely compiled anyway.
-t
Toggles between "temporary file" mode and "in memory"
mode. If "FileMode" is enabled in the configuration
file, it switches to "in memory" mode and vice versa.
-h or -?
for help
ERRORLEVELS
0 - Normal termination, something compiled
1 - Help requested
2 - File Open error
3 - Abnormal termination
4 - Disk Full
5 - Can't find config file
6 - Configuration error
7 - Out of memory
8 - Read error while applying diff
9 - CRC error (applying diff)
10 - CRC error (compiling list)
11 - User Break
12 - Cannot rename temporary output nodelist files
13 - Cannot open source nodelist file
15 - Too many nodelists in inbound directories
100 - Normal termination, nothing compiled
250 - MsgApi: Init Error
251 - MsgApi: Area Open Error
252 - MsgApi: Area Lock Error
253 - MsgApi: Area Close Error
CONFIGURATION
Before analyzing the cfg keywords in detail, let's introduce the
overall mechanism that is at the basis of FastLst's
configuration.
If you are converting from a different nodelist compiler, please
forget the old configuration and start from scratch.
FastLst.Cfg is divided into several logical blocks and the
sequence of the various statements is essential: you cannot just
put keywords somewhere in the config file; they must be arranged
in the correct order.
At first, this characteristic of FastLst's configuration could
appear complex to understand, but, as soon as you will grasp its
logic, you will understand that it's really easy to write a
correct configuration file and you will appreciate its
extraordinary flexibility.
The first block of configuration is the "Global" one.
The verbs in this block refer to the compilation of all the
nodelists.
Then there are one or more "Output Blocks": each output block
refers to the compilation of a single V7 nodelist (e.g.
NODEX.*).
Each "Output Block" has a "Output section" (with statements
regarding the compilation of the whole V7 list) and one or more
"Input blocks" containing the verbs that describe how to compile
each of the source nodelists.
The first "Output Block" can optionally be of a special kind: a
"NoCompile" block, whose "Input Blocks" describe nodelists that
must be maintained (e.g. diffs applied) but not compiled to any
V7 list.
Some statements can be used in blocks of a particular type only,
others can be used in many different places depending on what
nodelists you want to be affected. As a rule of thumb, you can
use each statement anywhere it seems to be logically acceptable.
If you feel frightened by such abstract considerations, please
take a look at the example Fast*.Cfg files, so that you can
quickly realize it's not that difficult.
To write your own configuration file you should start modifying
the example one that is more adequate to your needs.
Now, let's consider all the verbs that are allowed in FastLst's
configuration.
CFG REFERENCE
- Items between square brackets (e.g. [<item>]) are optional.
- The names of the various Keywords are NOT case sensitive.
- When a directory path is required, the trailing backslash '\'
is optional.
- The ';' character starts comments: any character following the
';' is ignored, unless inside quoted strings.
- The maximum length of configuration lines is 254 characters,
so don't go further (you can always split address lists into
smaller ones).
- In the OS/2 version, any file specification can be a legal
OS/2 name, between double quotes if necessary.
Please, note that the order of the configuration statements
follows some logical rule. In order not to create confusion in
the .cfg file and not to break some _necessary_ order relation,
please follow the scheme proposed in the example Fast*.CFG files
and in this reference documentation.
Please, be aware that the generation of text files (FidoTxt,
FidoPrn, FidoUserLst verbs) and the use of lots of options and
overrides can slow down the compilation process: use only the
options/overrides that you really need if you mind compilation
time.
G L O B A L
The following verbs can be used in the Global section of
FastLst.cfg. Some of them can be used in other places also, so
they are divided into separate sections.
G L O B A L
Section A
The following configuration verbs can be used in the GLOBAL
section of FastLst.Cfg.
RegKey <RegKey>
Registered Users only: <RegKey> is the registration key
and it is NOT case sensitive.
Example:
RegKey dfhyuwru6274623
Priority <type> [<level>]
Changes the execution priority of the FastLst process
(OS/2 32 bit only).
Ignored by OS/2 16 bit and DOS versions.
<type> is one of: Idle Regular High
<level> is an integer in the range 0...31 and defaults
to 0.
If you do not use this statement, FastLst will run at
the default priority, which normally is "Regular 0".
Examples:
Priority High 31
Gives Fastlst the highest priority for "non
time-critical" processes. It will run fast even if it
is in the background and other processes are active.
Priority Idle
Gives FastLst the lowest priority, so that it loads
the system as minimally as possible. It will run
significantly slower, especially if in the background
or when other CPU intensive processes are in
execution.
FileMode
Enables the temporary file mode (32 bit only).
Ignored by the 16 bit versions.
Makes Fastlst use temporary files, so that the memory
requirements remain low and independent of the size of
the compiled nodelists.
If you do not use this statement, FastLst (32 bit) uses
memory for storing the data it needs for building the V7
indexes. If you have not enough free memory, the DOS 32
version will return an "out of memory" error while the
OS/2 32 one will run slowly.
StatusLog <LogFile>
<LogFile> is the name of the file where all the
operations performed by FastLst will be logged,
following the "Binkley(**) Style".
In multitasking environments, please be sure to use a
file that cannot be used by other processes at the same
time. For example: if (in your system) FastLst can be
executed while Binkley is running, please use different
log files.
Should you not want the log file, you can comment this
keyword out.
Example:
StatusLog d:\bbs\log\FastLst.log
CompressCfg <compress_cfg>
This is a "Squish style" compress definition file.
In the case you are using a case-sensitive
de/compression program (e.g. OS/2 ZIP/UNZIP), please
make sure to use the correct switches in <compress_cfg>
and/or the correct case (Lower/Upper) in <NodeList> and
<NodeDiff> specifications.
You can find the suggested <compress_cfg> in the example
Compress.Cfg file included in the FastLst pack.
If you are already using Squish and or Maximus (*), you
can just specify the name of their compress.cfg (but do
check that they indicate the necessary switches to avoid
case sensitiveness during extraction).
Refer to the "Compress Definition File" section at the
end of this document for the syntax of <compress_cfg>.
TmpPath <TmpDir>
Specifies a directory to be used for temporary files.
If TmpPath is not used, FastLst will use the path
specified in the TEMP or TMP environment variables or
(if they are not defined) the current directory.
FastLst will not damage any file already present in the
temporary directory.
The 16 bit versions always use temporary files, while
the 32 bit ones work in memory unless the "FileMode"
statement or -t command line switch are used.
InputPath <NodeDir>
Specifies the default path for input files (source
nodelists/nodediffs). You can override it by using a
full pathname in input-file specifications.
Created if not existing.
Example:
InputPath d:\bbs\nodelist\
ArcPath <ArcNodeDir>
Specifies the default path for Archived nodelist files.
It usually points to the file area where your TIC
processor moves the inbound nodelist archives.
You can override it by using a full pathname in
Archived-file specifications.
Example:
ArcPath d:\bbs\file\nodelist\
KillAfter
Old V7 files are killed after the new ones have been
successfully written.
The new V7 files are written to temporary names, then
the old ones are killed and the new ones renamed (and
FastLst retries for 15s in case of error, to be
multitasking smart).
Thus you will always have a valid V7 nodelist, even in
the case of a compilation error and consequent compile
abortion. Besides, your multitasking system can continue
operations while FastLst is working. On the other hand
you could need some more spare disk space to hold the
old and new files during compilation.
KillSource
Tells FastLst to kill all uncompressed nodelists (that
are also available in archived format) before
terminating.
Please note that FastLst deletes a source nodelist only
if the ArcList statement is defined.
Besides, when the NodeDiff statement is used, an
ArcMethod must be defined to allow the deletion of the
nodelist.
When no NodeDiff is defined, FastLst assumes that the
uncompressed NodeList has been extracted from a
corresponding archive.
BeforeKillSource <command>
This statement is used to invoke a command of your
choice before the source nodelists are killed, upon
FastLst completion.
<command> is executed even if "KillSource" is not used.
It is a means of invoking a command before FastLst ends.
The "NeededBeforeKill" verb must be used to specify the
NodeLists needed by this command: if one of these
nodelists is found new, then this command is invoked
after decompressing all the nodelists that have the
"NeededBeforeKill" attribute (and have not been
decompressed yet).
IMPORTANT: <command> is executed ONLY if some nodelist
affected by a "NeededBeforeKill" verb has been detected
as new.
<command> can be any command that is valid for the
command interpreter specified in your COMSPEC
environment variable.
If <command> invokes an executable file, it is loaded
and executed directly; otherwise your command
interpreter is invoked, so that you can execute a batch
file or any other valid command.
No variable parameters are supported.
Dash2Comma
Change dashes to commas in the phone numbers.
Useful for people that are still connected to ancient
"rotary pulse" electromechanic telephone exchanges.
NoDash
Remove dashes from the phone numbers.
NoReport
Do not output nodelist statistics
NoRedir
Nodes that do not have a valid phone number (Hold,
Unpublished) are usually redirected to their
coordinators.
When this verb is used, redirection does not take place
and the node is given an empty phone number, so that you
never call a system different from that you think you
are calling.
Please note that (even with no NoRedir verb):
- points are never redirected;
- if you have a password with a system or its
coordinator, this node will never be redirected.
V7BugFix
Circumvents a bug with V7 nodelist in Binkley 2.50 (and
perhaps in many other programs whose V7 search function
was inspired by Binkley's sources) that can sometimes
hide segments of V7 nodelist. If you are unsure, keep
this keyword active.
MsgLogArea <path> [-$]
Some information about the compilation can be reported
to a fido or squish message area.
<path> indicates a message area for reporting
compilation logs.
-$ specifies that the area is in Squish format;
otherwise it is assumed to be *.MSG.
The "MsgLog" statement (see Global Section C) can be
used to add some information that is not reported by
default.
Examples:
MsgLogArea \bbs\mail\net -$
MsgLogArea \bbs\mail\net\
MsgRemArea <path> [-$]
The comments found in the compiled nodelists can be
selectively reported to a fido or squish message area.
<path> indicates a message area for reporting
compilation logs.
-$ specifies that the area is in Squish format;
otherwise it is assumed to be *.MSG.
The "MsgRem" statement (see Global Section C) MUST be
used to specify which types of comments you want to be
reported.
Please note that no comments are reported if no "MsgRem"
statement is used.
Examples:
MsgRemArea \bbs\mail\net -$
MsgRemArea \bbs\mail\net\
MsgFromNode <address>
MsgToNode <address>
Specify the addresses for the created messages.
<address> is a 4D address.
Example:
MsgFromNode 2:332/504
MsgToNode 2:332/504.1
MsgTo <name>
Specifies the name of the addressee of the created
messages.
Example:
MsgTo Alberto Pasquale
MsgAttr <attributes>
Specifies the attributes for the created messages.
<attributes> can be a (not case sensitive) combination
of:
P : Private
K : Kill/Sent
C : Crash
H : Hold
D : Direct (crash + hold in squish messages)
Examples:
MsgAttr P
MsgAttr pk
MsgSize <bytes>
Specifies the maximum size of a single message: after
this length, the message is split.
Defaults to 7K, greater values are recommended, so that
the message is not divided into too many parts.
16 bit: maximum 65535
32 bit: no maximum (4294967295)
WARNING: Dos 16 version has stringent problems of
memory, so you should be happy with the 7K default.
Example:
MsgSize 60000
Cost and Dial translation Tables
You can specify costs and dial translations in separate tables
or in a combined "Dial and Cost" table.
To Europeans: you usually will prefer separate tables, since the
dial translations are quite simple. This way you can keep the
(very short) dial table always fixed, while adjusting the cost
table to your needs. Anyway, if you do not use long cost tables,
you could find the combined dial & cost table convenient.
To Americans: you have quite long dial tables since you need to
list all the "local exchange" codes. So you usually don't like
duplicating this list for assigning the costs: you will
appreciate the combined table. The custom definition for the
list of local exchanges should also speed up the compilation of
all the nodelist entries that are out of you Area Code.
Cost Table
This is the Cost Table to be used in association with a separate
Dial table, that must follow.
It begins with "Cost" and ends with the "End" keyword.
Each entry in the cost table has the following format:
<PartPhone> <Cost> [<UCost> [<StripFlags>]]
<PartPhone>
is a partial phone number to be matched with the initial
part of nodelist entries. The dashes are ignored. The
<PartPhone> of the last entry must be a single dash "-",
to mean that all the remaining numbers will take the
costs specified there.
<Cost>
is the cost field of the compiled nodelist (0->65535).
It represents the "Call Cost" for any node whose phone
number begins with <PartPhone> in the source nodelist
(before dialing translations).
<UCost>
is an optional "User Cost" (fee for a netmail message on
BBS). If it is not used, it's taken equal to <Cost>. If
you would like your users to be able to send netmail
messages from the BBS with no need for "credits", you
should set <UCost> to 0.
<StripFlags>
is an optional list of nodelist flags (not case
sensitive) to be stripped from entries of nodes whose
phone number begins with <PartPhone>. Thus you can strip
some modem-type flags (V32, HST, ZYX, ...) when calling
into critical areas. This parameter can only be used
after <UCost>.
When searching for "PartPhone", the first matching entry is
applied: in the case of entries with an initial part in common,
you have to specify them in sequence from the longest to the
shortest. If no match is possible, the last line specifies the
default (thereby international) <Cost> and optional <UCost> and
<StripFlags>.
Example 1:
The following example assigns <UCost> = 0 to all, <Cost>
= 0 to local systems, 60 to domestic and 300 to
international ones.
Cost
39-59 0 0 ; local
39- 60 0 ; domestic long distance
- 300 0 ; international
End
Example 2:
Now let's strip some flags from some areas.
Cost
1-703 300 0 HST,H14,H16 ; strip HST
45-123 300 0 V32,V32b ; strip V32 and V32b
39-59 0 0 ; local
39- 60 0 ; long distance
- 300 0 ; international
End
Example 3:
Now let's differentiate between urban and district calls
and between Continental and Intercontinental calls; call
and user cost considered equal.
Cost
39-59-2 5 ; urban
39-59-3 5 ; urban
39-59-4 5 ; urban
39-59-81 5 ; urban
39-59-82 5 ; urban
39-59 30 ; district
39 60 ; domestic long distance
43 100 ; Austria
32 100 ; Belgium
45 100 ; Denmark
33 100 ; France
49 100 ; Germany
44 100 ; UK
31 100 ; Netherlands
34 100 ; Spain
46 100 ; Sweden
41 100 ; Switzerland
1 200 ; USA/Canada
- 300 ; others
End
Dial Table
This table can be used either as a simple Dial Table in
association with a separate preceding Cost Table or as a
combined Cost/Dial Table (in which case the Cost Table must NOT
exist).
It begins with "Dial" and ends with the "End" keyword.
Each entry has the following format:
<PartPhone> [<PreSuf>]
or
<PartPhone> <PreSuf> [<Cost> [<UCost> [<StripFlags>]]]
The first form is for the separate Dial Table, the second one is
for the combined Cost/Dial Table.
Two additional keywords are allowed inside the combined Dial Table:
LocalValues <PartPhone> <PreSuf> [<Cost> [<UCost> [<StripFlags>]]]
Defines the dial translation and costs for the local
exchanges.
LocalExchanges <num> ...
Lists all the local exchanges. Please remember that the
line length is limited to 254 characters. You can use
multiple "LocalExchanges <num> ..." lines if you like
short lines or need more than 254 characters.
Please note that all numbers that (after <PartPhone>
stripping) begin with <num> are considered local.
For example, if 220, 221, 222, 223, 224, 225, 226, 227,
228, 229 are all local exchanges, you can indicate 22 to
include them all.
The use of these two statements in the place of a long list of
normal table lines (one for each local exchange) should also
speed up the processing of all the nodelist entries that are not
in your area code.
<PartPhone>
is a partial phone number to be matched with the initial
part of nodelist entries. The dashes are ignored. The
<PartPhone> of the last entry must be a single dash "-",
to mean that all the remaining numbers will take the
parameters specified there.
<PreSuf>
can be one of:
a: <Prefix>
b: /<Suffix>
c: <Prefix>/<Suffix>
d: /
<PartPhone> is stripped from numbers beginning with it,
then <PreSuf> is used to prepend/append the specified
strings to the remainder.
Case a: <Prefix> is prepended.
e.g.: "39- 0"
strips "39-" and adds "0" at the beginning of
the number.
Case b: <Suffix> is appended.
e.g.: "39-59- /!"
strips "39-59-" and adds "!" at the end of the
number.
Case c: <Prefix> is prepended and <Suffix> appended.
e.g.: "39- 0/!"
strips "39-", adds "0" at the beginning and "!"
at the end.
Case d: Nothing is prepended nor appended.
e.g.: "/"
The slash is needed to allow the correct
interpretation of the subsequent fields, in the
case of combined Dial/Cost table.
No spaces are allowed between prefix, suffix and the
separating slash.
The remaining fields are used as described in the "Cost Table"
section. If the <Cost> field is omitted, it is taken equal to
65535.
When searching for "PartPhone", the first matching entry is
applied: in the case of entries with an initial part in common,
you have to specify them in sequence from the longest to the
shortest. If no match is possible, the last line specifies the
default (thereby international) parameters.
Example 1 (separate tables, European viewpoint):
Dial
39-59- ; local
39- 0 ; domestic
- 00 ; international
End
"39-59": Country and District codes are stripped for
local calls.
"39-" : Country code is stripped and replaced by "0"
(domestic long distance code) for domestic
calls.
Others: "00" (International access code) is prepended.
Example 2a/2b (combined tables, North American viewpoint):
Since this one is a bit more complex, let's make clear
some points.
There are some groups of phone numbers:
1 - Local numbers.
The Country Code (1) and the Area Code must be
stripped.
2 - Area Code numbers.
They have your same Area Code but they are long
distance.
As far as I know, some of you have to dial the Area
Code and some do not. In any case you usually want
to differentiate costs.
The Country (1) and Area Codes must be stripped and
replaced by the long distance access code (1) and
(for some of you) the Area Code (in the latter case,
the number really remains untouched).
Even if the Country Code for USA/Canada (1) is
numerically equal to your long distance acces code,
they are conceptually quite different, and so they
will be treated.
3 - Domestic numbers.
USA/Canada numbers, with a leading "1", that is the
international Country Code for USA and Canada.
They must be left untouched, since the american long
distance access code is equal to the international
Country Code for North America.
4 - International numbers.
These are numbers out of USA and Canada.
They must be prefixed by "011", that is the
international access code.
And now let's see how to achieve our goal using
FastLst's Dial Table.
Example 2a:
Let's suppose:
- we are in Area Code 414
- the 414 must be stripped for LD calls
- the local exchanges are 231, 232, 233, 235, 236, 424
Dial
; strip 1-414- from local numbers, do not add
; a prefix, set call and user costs to 0.
LocalValues 1-414- / 0
LocalExchanges 231 232 233 235 236 424
; Remaining "1-414-" numbers are long distance:
; strip the 414 Area Code and assign costs = 25.
1-414- 1- 25
; Remaining "1-" numbers are Domestic Long Distance.
; Set costs to 50
1- 1- 50
; Remaining numbers are international.
; Prepend 011 and set call cost to 250 and
; user cost to 500
- 011 250 500
End
Example 2b:
Let's suppose:
- we are in Area Code 604
- the 604 must NOT be stripped for LD calls
- the local exchanges are 220 221 222 224 228 230 231 240
241 244 250 251 252 253 254 255 257 258 261 263 264 266
Dial
; strip 1-604- from local numbers, do not add
; a prefix, set call and user costs to 0.
LocalValues 1-604- / 0
LocalExchanges 220 221 222 224 228 230 231 240
LocalExchanges 241 244 250 251 252 253 254 255
LocalExchanges 257 258 261 263 264 266
; Remaining "1-604-" numbers are long distance:
; assign costs = 25.
1-604- 1-604- 25
; Remaining "1-" numbers are Domestic Long Distance.
; Set costs to 50
1- 1- 50
; Remaining numbers are international.
; Prepend 011 and set call cost to 250 and
; user cost to 500
- 011 250 500
End
Example 3 (combined table, European viewpoint):
The following combined table is equivalent to the
separate "Example 3" for the Cost Table and Example 1
for the Dial Table.
Dial
LocalValues 39-59- / 5
LocalExchanges 2 3 4 81 82 ; urban
39-59- / 30 ; district
39- 0 60 ; domestic long distance
43 0043 100 ; Austria
32 0032 100 ; Belgium
45 0045 100 ; Denmark
33 0033 100 ; France
49 0049 100 ; Germany
44 0044 100 ; UK
31 0031 100 ; Netherlands
34 0034 100 ; Spain
46 0046 100 ; Sweden
41 0041 100 ; Switzerland
1 001 200 ; USA/Canada
- 00 300 ; others
End
Modem Type Table
If you have a modem that does not need different dial strings
for different protocol connections, you can skip this section.
For Example a Zyxel modem usually needs one only dial string for
any type of connection (unless you do not use "Multi-Auto"
mode).
Instead, if you need different dial strings, you can use the
Modem_Type field in conjunction with some front-end feature that
allows to specify different dial strings for different modem
types ("ModemTrans" in Binkley).
Each entry in the TypeDef table has the following format:
<Flag> <Value>
<Flag> is a Nodelist flag, <Value> is a number 0->255.
The nodelist flags of each node are searched for <Flag>.
The <Flag> must match completely a nodelist flag: if <Flag> is
V32 and the nodelist flag is V32B, it's not a match.
The search is not case sensitive.
If <Flag> is found, the corresponding ModemType field is set to
<Value>, otherwise the next <Flag> is searched for.
The ModemType field of the compiled nodelist will be determined
by the first match only: If you define HST before V32, a node
with both V32 and HST will have a HST modem type.
The following examples are valid for Binkley's new "exact match"
modemtrans style only (for use of old bitwise style, see below).
Example 1:
for USR Courier Dual Standard V.Everything:
TypeDef
V34 1 ; first choice
VFC 2
V32T 3
H16 4
V32B 5
ZYX 5 ; ZYX implies V32B
Z19 5
Z16 5
H14 6
V32 7
HST 8
End
In Binkley.Cfg you can use:
ModemTrans 0 ATB0D/ ; default
ModemTrans 1 ATB0D/ ; V34
ModemTrans 2 ATB0D/ ; VFC
ModemTrans 3 ATB0D/ ; V32T
ModemTrans 4 ATB1D/ ; H16
ModemTrans 5 ATB0D/ ; V32B, ZYX
ModemTrans 6 ATB1D/ ; H14
ModemTrans 7 ATB0D/ ; V32
ModemTrans 8 ATB1D/ ; HST
Example 2:
for 2 lines, ISDN and USR DS V.Everything:
The UISDNA, UISDNB, UISDNC entries are required only
until the incorrect ",UISDNA," type entries are changed
to the correct ",U,ISDNA," style or the ISDN flags become
standard flags (not user defined as they currently are).
TypeDef
ISDNC 1
UISDNC 1
ISDNB 2
UISDNB 2
ISDNA 3
UISDNA 3
V34 4
VFC 5
V32T 6
H16 7
V32B 8
ZYX 8 ; ZYX implies V32B
Z19 8
Z16 8
H14 9
V32 10
HST 11
End
In Binkley.Cfg, ISDN line, you can use:
ModemTrans 0 ; don't dial (2400)
ModemTrans 1 <ISDNC_Dial_String> ; ISDNC
ModemTrans 2 <ISDNB_Dial_String> ; ISDNB
ModemTrans 3 <ISDNA_Dial_String> ; ISDNA
ModemTrans 4 ; don't dial (V34)
ModemTrans 5 ; don't dial (VFC)
ModemTrans 6 ; don't dial (V32T)
ModemTrans 7 ; don't dial (H16)
ModemTrans 8 ; don't dial (V32B,ZYX)
ModemTrans 9 ; don't dial (H14)
ModemTrans 10 ; don't dial (V32)
ModemTrans 11 ; don't dial (HST)
In Binkley.Cfg, USR line, you can use:
ModemTrans 0 ATB0D/ ; default (2400)
ModemTrans 1 ; don't dial (ISDNC)
ModemTrans 2 ; don't dial (ISDNB)
ModemTrans 3 ; don't dial (ISDNA)
ModemTrans 4 ATB0D/ ; V34
ModemTrans 5 ATB0D/ ; VFC
ModemTrans 6 ATB0D/ ; V32T
ModemTrans 7 ATB1D/ ; H16
ModemTrans 8 ATB0D/ ; V32B, ZYX
ModemTrans 9 ATB1D/ ; H14
ModemTrans 10 ATB0D/ ; V32
ModemTrans 11 ATB1D/ ; HST
Example 3:
for 2 lines, ISDN and analog, when you want both lines
enabled to dial systems that have both ISDN and analog
access. You usually should not want such a behaviour
(why calling a ISDN system the analog way ?); however,
if you really know what you are doing, here is a viable
trick.
You have to use the "BitType" mode (see below):
BitType
Typedef
ISDNA 1
ISDNB 1
ISDNC 1
V34 2
VFC 2
V32T 2
V32B 2
V32 2
End
In Binkley.Cfg, ISDN line, you can use:
ModemTrans 0 ; don't dial (2400)
ModemTrans 1 <ISDN_Dial_String> ; ISDN only
ModemTrans 2 ; don't dial (analog only)
ModemTrans 3 <ISDN_Dial_String> ; ISDN + analog
In Binkley.Cfg, analog line, you can use:
ModemTrans 0 ATDT ; 2400
ModemTrans 1 ; don't dial (ISDN only)
ModemTrans 2 ATDT ; analog only
ModemTrans 3 ATDT ; analog + ISDN
For compatibility with old Binkleys and derived systems, the
following statement is provided:
BitType
If you need old-style bit-oriented modem type, you must enable
this verb. In this case the "TypeDef" works differently:
- <Value> should be a power of 2 (1, 2, 4, 8, 16, 32, 64, 128).
- The ModemType will be determined by ORing all the <Value>s
corresponding to <Flag>s that found a match in the nodelist
flags.
- The dial string used by your front-end will be determined by
the order of their specifications (the first ModemTrans that
has some bit in common with the modem type will be used).
Example for USR Courier Dual Standard V.Everything:
BitType
TypeDef
V34 1 ; first choice
VFC 2
V32T 4
H16 8
V32B 16
ZYX 16 ; ZYX implies V32B
Z19 16
Z16 16
H14 32
V32 64
HST 128
End
In Binkley.Cfg you can use:
ModemTrans 0 ATB0D/ ; default
ModemTrans 1 ATB0D/ ; V34
ModemTrans 2 ATB0D/ ; VFC
ModemTrans 4 ATB0D/ ; V32T
ModemTrans 8 ATB1D/ ; H16
ModemTrans 16 ATB0D/ ; V32B, ZYX
ModemTrans 32 ATB1D/ ; H14
ModemTrans 64 ATB0D/ ; V32
ModemTrans 128 ATB1D/ ; HST
G L O B A L
Section B
The statements in this section affect the processing of all
the output blocks and thereby of all the input nodelists.
These statements can also be used in the "OUTPUT" section of an
OUTPUT block or inside an INPUT block, in which case they affect
the compilation of the relevant block only.
In the case you use a verb that has already been used in a
"higher level" block, it will behave as a local override.
NeededBeforeKill
Tells FastLst that the affected NodeList(s) are needed
by the command run via the "BeforeKillSource" statement.
The "BeforeKillSource" verb allows you to run a command
(executable or batch file) after the compilation has
completed, just before FastLst ends and (if "KillSource"
is used) deletes the source files that are also present
in archived form.
The lists affected by "NeededBeforeKill" are extracted,
if not already present, before the "BeforeKillSource"
command is executed.
ArcMethod <meth>[,<f>] ...
Tells FastLst that it must make sure that all new
nodelists are archived using the specified methods.
The original archive is NOT killed.
Obviously, a new nodelist is not rearchived to its
original method.
<meth> is the name of an archiver defined in
compress.cfg.
<f> is the optional specification of the letter to be
used for the variable archive extension. If not
specified, it is assumed equal to the first letter of
the defaults extension for this archiver.
Multiple ArcMethod statements are allowed.
Example 1:
ArcMethod ZIP LH,H
NodeList.Z48 arrives: it is archived to NodeList.H48
also, using the LH archiver.
Example 2:
ArcMethod ZIP LH
NodeDiff.Z48 arrives: the resulting nodelist is archived
to NodeList.Z48 using the ZIP archiver and to
NodeList.L48 using LH.
ArcDiffMethod <meth>[,<f>] ...
Tells FastLst that it must make sure that all new
nodediffs are archived using the specified methods.
The original archive is NOT killed.
Obviously, a new nodediff is not rearchived to its
original method.
<meth> is the name of an archiver defined in
compress.cfg.
<f> is the optional specification of the letter to be
used for the variable archive extension. If not
specified, it is assumed equal to the first letter of
the defaults extension for this archiver.
Multiple ArcDiffMethod statements are allowed.
Example:
ArcDiffMethod ZIP LH,H
NodeDiff.Z48 arrives: it is archived to NodeDiff.H48
also, using the LH archiver.
EXTERNAL COMMANDS
The following verbs allow to invoke external commands.
<command> can be any legal command-line command: it can be the
name of an executable file, a batch file or any command that can
be understood by your command-line interpreter (OS/2's CMD,
4OS2(***), etc.).
If <command> does not directly invoke an executable file,
FastLst automatically invokes your default command line
interpreter (as specified by the COMSPEC environment variable).
Archive Related Commands
The following verbs share the same syntax:
Two parameters are allowed in <command>:
%a is translated to the full pathname of the archive file.
%f is translated to the name of the file to be added or
extracted (no path).
<command> is run from the path where %f belongs.
BeforeArcList <command>
Command to be run before archiving a nodelist.
AfterArcList <command>
Command to be run after archiving a nodelist.
BeforeUnArcList <command>
Command to be run before extracting a nodelist.
AfterUnArcList <command>
Command to be run after extracting a nodelist.
BeforeArcDiff <command>
Command to be run before archiving a nodediff.
AfterArcDiff <command>
Command to be run after archiving a nodediff.
BeforeUnArcDiff <command>
Command to be run before extracting a nodediff.
AfterUnArcDiff <command>
Command to be run after extracting a nodediff.
Example to hatch the new nodelist (note that you probably
need to specify the location of the config file
since the command is executed from the directory
where %f resides):
AfterArcList Hatch %a NODELIST "New NodeList"
NodeDiff Related Commands
The following verbs accept different parameters:
%l is translated to the full pathname of the nodelist.
%d is translated to the full pathname of the nodediff.
<command> is run from the current directory.
BeforeEdit <command>
Command to be run before applying a nodediff.
AfterEdit <command>
Command to be run after applying a nodediff.
G L O B A L
Section C
The statements in this section affect the processing of all
the output blocks and thereby of all the input nodelists.
These statements can also be used in the "OUTPUT" section of an
OUTPUT block (except for the "NoCompile" one) or inside an INPUT
block, in which case they affect the compilation of the relevant
block only.
In the case you use a verb that has already been used in a
"higher level" block, it will behave as a local override.
MsgRem [<string>]
If MsgRemArea is used, FastLst reports the following
comments:
No MsgRem statement: none;
MsgRem with no <string>: all;
MsgRem with <string>: only the comments that begin with
";<l> " where <l> is one of the characters in <string>.
The ";" character in <string> means that the comments
beginning with "; " or ";<word>" can be reported.
Common types of comment lines:
;S This is a comment for SysOps
;U This is a comment for users
;F This comment should appear in formatted Fido lists
;A This is a comment of general interest
;E This comment is an error message
Example:
"MsgRem SE"
Only comments destined to SysOps and Error messages are
reported (lines beginning with ";S " and ";E ".
MsgLog [NullPhone] [Redirected] [Points]
Some common situations (not really errors) are not
reported to MsgLogArea by default: if you want FastLst
to report them anyway, you can use this statement, but
be aware that very long reports could come out.
"NullPhone": systems with empty phone string are logged.
"Redirected": systems redirected to their coordinators
are logged (Hold, unpublished).
"Points": points with empty phone string are logged; be
aware that most pointlists contain unpublished (thereby
with empty phone) points.
Examples:
MsgLog Redirected
MsgLog Redirected NullPhone
GermanPointList
Instructs FastLst to consider the affected nodelist as a
3D German style pointlist. Zone 2 is assumed, if not
explicitly specified in the "NodeList" statement.
This verb is usually used inside an Input Block, so that
it affects that nodelist only.
WARNING: Be aware that using this statement in the
global section or in an Output block affects all the
involved nodelists !
Example Input Block:
NodeList Points24.???
GermanPointList
Nodediff Pr24Diff.???
ArcList Points24.??? 1
ArcDiff Pr24Diff.??? 5
ArcListDesc R24 PointList for day %d (%D), %a format
ArcDiffDesc R24 PointDiff for day %d (%D), %a format
BeforeCompile <command>
Command to be run before compiling the affected nodelist.
This statement follows the same rules explained in
"External Commands" in section B.
The %l parameter is translated to the full pathname of
the nodelist.
<command> is run from the current directory.
AfterCompile <command>
Command to be run after compiling the affected nodelist.
This statement follows the same rules explained in
"External Commands" in section B.
The %l parameter is translated to the full pathname of
the nodelist.
<command> is run from the current directory.
SysOpLst
Output SysOp data from all the input nodelists to the
output list (FidoUser.Lst) and/or index (Sysop.ndx).
Example:
SysOpLst
FidoTxt [<FidoTxt>]
Generate an 80 Column Text List of nodes.
Nodes included via the "Node,..." method and points are
excluded.
<FidoTxt> optionally specifies an output file name,
which defaults to "NodeList.Txt". If the same file name
has already been used for other nodelists, the output is
appended.
Example:
FidoTxt
FidoPrn [<FidoPrn>]
Generate a 132 Column Text List of nodes.
Nodes included via the "Node,..." method and points are
excluded.
<FidoPrn> optionally specifies an output file name,
which defaults to "NodeList.Prn". If the same file name
has already been used for other nodelists, the output is
appended.
Example:
FidoPrn
IncCoord <CoordLev>
The coordinators of the specified and upper levels will
be always included, even if excluded by "IncAddr" and
"ExcAddr". <CoordLev> can be ZC, RC, NC, HC.
Example:
IncCoord NC
Global Export Section
You can use here the statements described in the "Export Global
Section" of the "Export Block" of the Input Block.
O U T P U T B L O C K
The following verbs define the compilation of a single output
binary nodelist.
The block begins with a "Output Section", that affects the
compilation of all the source (input) nodelists, followed by a
sequence of "Input Blocks" that define how to handle each of the
source nodelists.
The first "output block" can be of a special kind: if the
"NoCompile" statement is used instead of "Version7", this block
indicates the actions necessary to maintain the specified
nodelists, but they are not compiled.
Version7 <Path> <Nodex> [<SysopNdx>]
Start of a block of config verbs defining the generation
of a Version 7 nodelist. You can generate one or more
Version 7 nodelists with different names and path for
the output files. Each "Version7" statement marks the
beginning of a new output-nodelist definition.
<Path> is the path where the output .DAT and .NDX files
are placed.
<Nodex> is the file name for the .DAT and address-index
.NDX files.
<SysopNdx> is the file name for the sysop-index .NDX
file. If you omit <SysopNdx>, no V7 SysOp-index will be
generated.
Unless you use different output nodelists for different
domains, you should usually adopt <Nodex>="NODEX" and
<SysopNdx>="SYSOP".
All the following verbs, up to the next "Version7" (if
any), are related to the preceding "Version7" output
files.
Example:
Version7 d:\bbs\v7\ NODEX SYSOP
NoCompile
This verb can be used to start the first "Output Block",
instead of "Version7".
This way the first output block becomes a "NoCompile"
block and the indicated nodelists are maintained but not
compiled.
This is a means for maintaining a NodeList (applying
nodediffs, archiving with different archivers etc.)
without compiling it.
The statements related to nodelist compilation (see
Global section C) are obviously illegal in a "NoCompile"
block.
O U T P U T Section
The following verbs affect the compilation of the current output
block and must precede the definitions of the input blocks
(which start with the Nodelist statement).
FidoUserLst [<FidoUserLst>]
Generate "fidouser.lst style" text SysOp list.
<FidoUserLst> optionally specifies an output file name,
which defaults to "FidoUser.Lst". Different output
blocks require different names.
Example:
FidoUserLst
SysDup <AddrLst>
When a SysOp name is present in various nodes, all the
name/address couples are kept in the SysOp lists
(fidouser.lst/sysop.ndx). If you want to keep only one
address you can use one or more SysDup lines: the SysOps
who have the addresses listed in <AddrLst> will be
present in the output sysop lists with the specified
address only. You can use abbreviated addresses, if you
like, provided that the first address of every "SysDup"
is complete (FastLst cannot make any assumption for the
first item in a list).
Example:
SysDup 2:332/504 505 336/980 3:25/28.27
Block Specifications
You can use here the same statements described in the "Global
Section B" and (if this is not a "NoCompile" block) "Global
Section C" and "Export Global Section" (see the Export Block
below).
ADDRESS SPECIFIC STUFF
The following verbs define address specific stuff that will
affect the compilation of all the source nodelists compiled in
the current output block. These statements are illegal in a
"NoCompile" block.
If you prefer, you can specify this type of information in the
"Address Specific Stuff" section of the pertinent input block.
WARNING: make sure all addresses have full info (incl. zone).
Password <Addr> <Password>
Allows to specify <Password> one <Addr> at a time.
Version 7 has no limit on password length, however the
programs that use it are usually limited to 8 chars.
Some (rare) programs have problems with 8 chars and need
a maximum of 7 or 6 chars.
Example:
Password 2:332/504.4 Password
PasswordFile <PasswordFile>
Allows to include a password file that contains many
address/password couples, one per line.
In this file you can omit the "Password" keyword.
If you like, you can use some "Password" keywords
together with one "PasswordFile", however you cannot use
more than one "PasswordFile".
Please note that the definitions found in this file have
effect on the current (Output or Input) block ONLY.
FastLst writes to the log file which source or output
nodelist is affected by each passwordfile; so, in case
of doubts, just check the logs.
Example:
PasswordFile fidonet.pwd
Phone <Addr> <NewNumber>
Allows to override a nodelist phone number.
<NewNumber> must be in the form used in the nodelist.
Example:
Phone 2:332/501.0 39-59-399999
NodeFlags <Addr> <NewNodeFlags>
Allows to substitute the flags listed in the nodelist
entry of <Addr>.
If you want to change the CM flag or modem type flags
(HST, V32b, ZYX) etc, you can use this verb. Please note
that the old flags are lost, so you need to indicate all
the necessary flags.
Example:
NodeFlags 2:332/501.0 CM,H16,V32b
Flags <Addr> <Flags>
The Flags statement allows to set the "user defined"
bits in the Flags word of the compiled nodelist entry.
These bits are named 5,6,7,8,9,A,B,D,E,F where bit 5 is
the 6th bit and F is the 16th bit of the word.
Example:
Flags 2:332/501.0 AB5 ; Set bits 5,A & B.
Cost <Addr> <NewCost> [<NewUCost>]
<NewCost> and <NewUCost> are in the range 0->65535.
Overrides the Cost and User_Cost fields of <Addr> in the
compiled nodelist. If no <NewUCost> is given, it's taken
equal to <NewCost>.
Example:
Cost 2:332/501.0 150
SEGMENT SELECTION
The following verbs allow to include or exclude selected
<NodeList> segments. If you do not use them, the full <NodeList>
is compiled. Be aware that the process of checking each address
against the list of segments to be included or excluded could
slow down the compilation, even if some gain could come from the
exclusion of large segments.
These statements are obviously illegal in a "NoCompile" block.
These statements can be used in an Input block to affect that
nodelist only.
IncAddr <PartAddrLst>
If you want to selectively include nodelist segments,
you can use this option: only zones, regions, nets,
hubs, nodes, points that are listed in <PartAddrLst>
will be present in the output files. You can specify
zone, region/net, hub/node and point numbers.
Example:
IncAddr 1 2:33 2:200/100 3:632 4:801/17
Compiles: zone 1, region 33 of zone 2, hub 100 of net
200 of zone 2, net 632 of zone 3, node 4:801/17
ExcAddr <PartAddrLst>
If you want to exclude some segments from the
compilation, you can list them in <PartAddrLst>, in the
same way as for "IncAddr". You can use either "IncAddr"
or "ExcAddr" or both of them to Include only selected
segments and exclude sub-segments.
Example:
ExcAddr 2:332/500
Excludes Hub 500 of net 332 of zone 2.
IncSysOp <PartAddrLst>
If not used, all the SysOp entries of the compiled
segments will be in the output SysOp list/index (if
SysOpLst is active). If you want to limit the SysOp
entries to selected segments, you can use this verb,
listing partial addresses in <PartAddrLst>. SysOps from
segments excluded from compilation via "IncAddr" and
"ExcAddr" will obviously never be present in the SysOp
list/index anyway.
Example:
IncSysOp 2
Includes only SysOps from zone 2.
I N P U T B L O C K
The Input Block starts with a "NodeList" statement and continues
until the start of the next Input or Output Block (NodeList or
Version7 statement respectively) or the end of the configuration
file.
NodeList <NodeList> [<PartAddr>]
Start of a block of config verbs defining the processing
of the specified <NodeList> file. You can use many
"NodeList" statements to compile several different
source nodelists into the same output files specified by
the preceding "Version7" statement. Each "NodeList" verb
marks the beginning of a new input-nodelist
processing-info block.
When an address is present in more than one <NodeList>
(e.g. you compile both the full nodelist and the faster
updated local region or zone segment) only the entry
found in the last compiled <NodeList> is put in the
indexes. To have the most up-to-date entries in your V7
indexes, please include local segments after the larger
list.
<NodeList> is the name of the input nodelist.
If you don't specify a path, <InputPath> is assumed.
If a terminal ".???" is specified, all the files with 3
digits at the place of '???' are examined and that with
the latest 3 digit day of the year is choosen for
compilation.
The optional <PartAddr> is a partial address that must
be specified for nodelist segments that do not have full
address info. For example, a REGION segment usually
starts with the "Region," keyword and does not contain
any Zone info: its up to you to tell FastLst which zone
we are talking about. Analogously you should provide
zone and net info when compiling a Hub segment. The
region is assumed equal to the net number of the partial
address, the hub equal to the node number.
Examples:
IMPORTANT: Please note that the following lines
represent a list of examples, NOT an example of
multiple nodelist compilation.
After each "NodeList" verb, you must specify all the
statements that affect the compilation of that
particular source file.
NodeList nodelist.??? ; Fidonet nodelist
NodeList region.033 2 ; Region 33 list, zone 2
NodeList region24.??? 2 ; Region 24 list, zone 2
NodeList net.332 2:33 ; Net list, zone 2, region 33
NodeList hub.500 2:332 ; Hub list, zone 2, net 332
NodeList locnode.500 2:332/500 ; Some nodes in zone 2,
; net 332, hub 500
NodeList points.504 2:332/504 ; Points of 2:332/504
; in "Point," format.
NodeList morenode.lst ; Some nodes in the "Node,"
; format. No <PartAddr> required
; since the "Node," line gives
; full address info.
NodeList ptlist.??? ; Point List in the "Boss,"
; format. No <PartAddr> required
; since the "Boss," line gives
; full address info.
Input Section
The following statements affect the handling of the nodelist
specified by the last "NodeList" statement (current Input
Block).
NodeDiff <NodeDiff>
<NodeDiff> is the name of the nodediff file.
If you don't specify a path, <InputPath> is assumed.
<NodeDiff> must terminate with ".???". FastLst will
search for a suitable <NodeDiff>, considering the files
that have a 3 digit day of the year in the place of the
trailing '???'.
Example:
NodeDiff NODEDIFF.???
ArcList <ArcList> [<Keep#>]
You can specify the name of the archive containing
<NodeList>. It is necessary if you use automatic
extraction/rearchiving, but it can even be used only to
delete old files.
<ArcList> is used to extract new nodelists, to compress
them using the methods defined in "ArcMethod", to
compress the new nodelists after the application of
nodediffs.
If <ArcList> has a terminating ".???", all the files
that have a suitable fixed (.zip, .lzh etc.) or variable
(.z10, .z17, .l10, .l17 etc.) extension are considered,
taking the digits as the last 2 digits of the day of the
year.
If you really want to limit search to a specified fixed
or variable extension, you can do:
"ArcList nodelist.zip", to consider .zip only;
"ArcList nodelist.z??", to consider .z?? only.
<Keep#> optionally specifies the number of archives to
be kept, basing on the day of the year (the file date is
also used to infer the correct chronological order).
If you maintain archives with multiple different
extensions (.z??, .l??, etc.) the actual number of files
increases, since multiple files with the same day
extension count for one.
The description associated to the deleted files is
removed from FILES.BBS.
Example:
ArcList nodelist.??? 1
ArcDiff <ArcDiff> [<Keep#>]
You can specify the name of the archive containing
<NodeDiff>. It is necessary if you use automatic
extraction/rearchiving, but it can even be used only to
delete old files.
<ArcDiff> must terminate with ".???".
All the files that have 2 digits in the place of the
last 2 '?' are examined, taking the digits as the last 2
digits of the day of the year.
If you really want to limit search to a specified
extension, you can do:
"ArcDiff nodediff.z??", to consider .z?? only.
<Keep#> optionally specifies the number of archives to
be kept, basing on the day of the year (the file date is
also used to infer the correct chronological order). In
the case of multiple archive extensions, the actual
number increases consequently.
The description associated to the deleted files is
removed from FILES.BBS.
Example:
ArcDiff nodediff.??? 5
ArcListDesc <Desc>
ArcDiffDesc <Desc>
You can specify a description to be added to FILES.BBS
for the new nodelist and nodediff files created by
FastLst.
Some parameters are available:
%d : the 3 digit day number (0 padded)
%a : the archiver name
%D : the date, USA format (Feb 10, 1995)
%L : the date, Local format
Example:
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d (%D), %a format
Local Specifications
You can use here the same statements described in the "Global
Section B" and (if we are not in a "NoCompile" block) "Global
Section C" and "Export Global Section" (see the Export Block
below).
ADDRESS SPECIFIC STUFF
You can specify here the address specific stuff that is related
to the current source nodelist (if not inside a "NoCompile"
block).
If you have already used the "Output section" for specifying
this kind of information, you can skip this section.
WARNING:
Often you will compile segments of a previously compiled
nodelist. For example you could have a "NodeList nodelist.???"
block for the world nodelist and then a "NodeList region.033"
block for your region's nodelist segment.
The majority of entries in the latter will be duplicates of
entries already found in the former. However, in the case of
duplicates, only the entries found in the last involved
"NodeList" block will go to the indexes and be active. This way
you can compile the full world nodelist while keeping your
segment up-to-date with local segments that get updated faster
than the full nodelist.
When you have to specify "Address Specific Stuff" for nodes that
are present in more than one "NodeList", you must do that in the
last involved "NodeList" block (or in the Output Section, of
course), otherwise your indications will have no effect.
For a list of allowed statements, please see the "Address
Specific Stuff" section of the "Output" section above.
SEGMENT SELECTION
You can use here the same statements described in "Segment
Selection" in the Output Section (if not inside a "NoCompile"
block).
EXPORT Block
FastLst can "export" segments of nodelist: e.g. you can export
the Region 25 from the world nodelist to a file called
Region25.???, where ??? stands for the day of the year. Note
that this feature is for exporting segments of nodelist to a
dedicated file. To compile segments you should continue using
the "Segment Selection" section of FastLst.Cfg.
These blocks MUST be at the _END_ of an "Input Block"; there can
be multiple Export Blocks in a single Input Block.
Obviously the Export Block is available for compiled nodelists
only, thus it is illegal inside a "NoCompile" block.
The export is done ONLY when a new NodeList is found (or when
the file to be exported exists neither in uncompressed nor in
archived form), even if the config file is changed. So, you can
safely hatch the created arcfile via the AfterArcExport command
with no danger of hatching it all the times you change something
in the cfg. Under these conditions, if you really want to export
anyway, you must use the -i command line switch.
IMPORTANT: If you use the same export filename for multiple
source nodelists, all the exported segments are appended one
another. This way, if you like, you can make FastLst generate a
"plain" nodelist file with many different source nodelists in
it, just appended one after another. Some people need this
feature to create input for some other program. For this feature
to work, you need to specify the '+' parameter in the "Export"
statement. See the example at the end of the "Export Global
Section".
Export [+] <file> [<PartAddrLst>]
The '+' sign must be specified when you want to create a
joined list by exporting multiple nodelists to the same
export <file>. This way the exported file will be
created every time the nodelist is compiled and its
timestamp will not be changed to be equal to the source.
<file> is the name of the file to which you want to
export the selected segment(s).
<PartAddrLst> is the partial address list of segments to
be exported. Usually it is a single partial address.
If omitted, the entire nodelist is exported (useful to
create a joined nodelist).
This statement marks the start of an "Export Block".
Multiple "Export Blocks" are allowed in the same "Input
Block".
N.B. The Export blocks must be at the _END_ of an input
block. See the example at the end of the "Export Global
Section" below.
Example:
Export region25.??? 2:25
Export Section
The following verbs define the parameters for the Export
specified by the last "Export" statement.
ArcExport <arcfile> [Keep#]
<arcfile> is the name of the archive file to which you
want to compress the exported <file>.
[Keep#] is the optional number of archive versions to be
kept, basing on the day of the year (the file date is
also used to infer the correct chronological order).
Example:
ArcExport region25.??? 2
ArcExportDesc <description>
<description> is the description to be applied to
FILES.BBS when a new archive is created.
Example:
ArcExportDesc Region 25 %D, %a format
Export Global Section
The following verbs can be used in the "Export Section" of an
"Export Block", in the "Input Section" of an "Input Block", in
the "Output Section" of an "Output Block", in the "Global
Section".
In few words, they are legal everywhere except for the
"NoCompile" block.
Depending on their positions, they affect the involved nodelists
only.
ArcExportMethod <meth>[,<f>] ...
Specifies the archive type(s) to be created for the
exported file.
<meth> is the archiver name as defined in Compress.Cfg.
<f> is the optional first letter to be used for variable
archive extensions.
Example:
ArcExportMethod zip lh,H
BeforeArcExport <command>
AfterArcExport <command>
Commands to be run before/after archiving the exported
file.
<command> can be any type of command (executable file,
batch file, internal command, alias, etc.) and supports
the %a (full archive name) and %f (name of the file to
be compressed, no path) and is run from the directory
where %f resides.
WARNING: since <command> is executed from the directory
where the file to be compressed belongs, you could need
to specify the location of the config files used by the
programs invoked via <command>.
Example:
AfterArcExport Hatch %a
ExportNeededBeforeKill
Specifies that the exported file is needed by the
"BeforeKillSource" command.
Full Example:
NodeList nodelist.???
NodeDiff nodediff.???
ArcList nodelist.??? 2
ArcDiff nodediff.??? 5
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d,(%D), %a format
Export region25.??? 2:25
ArcExport region25.??? 1
ArcExportDesc Region 25 %D, %a format
ArcExportMethod zip lh
AfterArcExport Hatch %a
Export region24.??? 2:24
ArcExport region24.??? 1
ArcExportDesc Region 24 %D, %a format
ArcExportMethod zip
Full Example to generate a joined list:
NodeList nodelist.???
NodeDiff nodediff.???
ArcList nodelist.??? 2
ArcDiff nodediff.??? 5
ArcListDesc Fido Nodelist for day %d (%D), %a format
ArcDiffDesc Fido Nodediff for day %d,(%D), %a format
Export + megalist.Lst
NodeList zonelist.???
NodeDiff zonediff.???
ArcList zonelist.??? 2
ArcDiff zonediff.??? 5
ArcListDesc Zonelist for day %d (%D), %a format
ArcDiffDesc Zonediff for day %d,(%D), %a format
Export + megalist.Lst
ArcExport megalist.??? 1
ArcExportDesc MegaList, %a format
ArcExportMethod zip lh
COMPRESS DEFINITION FILE
The <compress_cfg> file is a sequence of Archive definition
blocks, each one starting with "Archiver" and ending with "End
Archiver". You can find an example in the Compress.Cfg file
included in the FastLst distribution pack.
The order of the archive definition blocks within <compress_cfg>
may be important: when trying to unpack a compressed file, the
list of archivers is scanned in a reverse order.
In the case of two archivers that use the same identification
character at the beginning of the file (e.g. ARC and PAK), you
must specify the archiver that can unpack both (PAK) after the
other one (ARC).
The compress.cfg file can be shared between DOS and OS/2
applications: the "DOS" and "OS2" keywords are available to
distinguish between the commands to be used under DOS and OS/2.
O.S. specific archivers or commands must be prefixed with the
relevant keyword.
IMPORTANT NOTE: The lines that begin with "DOS" or "OS2" are
parsed by FastLst's DOS and OS2 versions respectively. If you
need your FastLst/2 execute a DOS command, you MUST NOT use the
DOS keyword: if you do, FastLst/2 will never parse that line; if
you do not, Fastlst/2 will execute the DOS command "normally",
provided you have installed OS/2's Dos support.
Archiver <ARCname>
Starts the Archive definition block.
<ARCname> is the name used in FastLst.Cfg for this
archiver.
Example:
Archiver ZIP
Extension <ext>
Specifies the default extension for the compressed
files.
Example:
Extension ZIP
Ident <ofs>,<ID>
<ofs> is a decimal integer number representing the
offset at which FastLst must look for the archive
identity marker <ID>.
Negative values can be used to indicate offsets from the
END of a compressed file. -1 means "the last byte", -2
"the second last byte" and so on.
<ID> is a series of hexadecimal figures which represent
the bytes of the marker string that FastLst must look
for at the specified offset in the files it is trying to
unpack.
Example:
Ident 0,504b0304 ; "PK^c^d"
Add <command>
Specifies the command to add files to an archive.
%a and %f are translated to the name of the archive and
file to add.
Example:
Add zip -jk %a %f
Extract <command>
Specifies the command to extract files from an archive.
%a and %f are translated to the name of the archive and
file to extract.
Example:
Extract unzip -qqnjC %a %f
View <command>
This line is recognized and accepted for compatibility,
but not used by FastLst.
End Archiver
This statement is used to close a Archive definition.
Complete example 1 (you need OS/2 only):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
Add zip -jk %a %f
Extract unzip -qqnjC %a %f
View unzip -v %a
End Archiver
Complete example 2 (you need DOS only):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
Add pkzip -a %a %f
Extract pkunzip -n %a %f
View pkzip -v %a
End Archiver
Complete example 3 (you need both OS/2 and DOS):
Archiver ZIP
Extension ZIP
Ident 0,504b0304
OS2 Add zip -jk %a %f
DOS Add pkzip -a %a %f
OS2 Extract unzip -qqnjC %a %f
DOS Extract pkunzip -n %a %f
OS2 View unzip -v %a
DOS View pkzip -v %a
End Archiver
Complete example 4 (archiver to be used under DOS only):
DOS Archiver ZOO
DOS Extension ZOO
DOS Ident 0,5a4f4f ; "ZOO"
DOS Add zoo a: %a %f
DOS Extract zoo e:O %a %f
DOS View zoo v %a
DOS End Archiver
Complete example 5 (it's a DOS executable, to be used under
DOS or OS/2 indifferently):
Archiver ZOO
Extension ZOO
Ident 0,5a4f4f ; "ZOO"
Add zoo a: %a %f
Extract zoo e:O %a %f
View zoo v %a
End Archiver
T R O U B L E S H O O T I N G
Problem: FastLst does not extract the correct
nodelist/nodediff.
Solution: Perhaps there is some nodelist/nodediff with corrupted
file date. Check your "ArcPath", manually extract to
the "InputPath" the required nodelist/nodediff and
delete the archive (or reset its file-date so that it
is similar to that of the enclosed file). FastLst will
automatically rearchive the nodelist/nodediff if you
use "ArcMethod"/"ArcDiffMethod", otherwise you can
rearchive manually.
Problem: FastLst goes out of memory (Dos versions).
Solution: DOS 16: - try freeing as much conventional memory as
possible.
- reduce the "MsgSize" buffer, if you have
used that statement in the configuration.
- be aware that 530K of free conventional
memory is the minimum requirement.
- If you have a 386sx or better, you can use
the 32 bit version that has less stringent
conventional memory requirements, but you
will need at least 800KB of extended memory.
DOS 32: - give more DPMI memory to FastLst
- enable the temporary file method: use the -t
command line switch or the "FileMode"
statement in the configuration file.
Problem: FastLst works very slowly (OS/2 32 bit version).
Solution: Perhaps you are compiling a large nodelist or set of
nodelists on a system with few MegaBytes of free
physical RAM, so that OS/2 needs to extensively use
virtual memory. Try using the "temporary file" method:
specify the -t command line switch or use the
"FileMode" statement in the configuration file.
Problem: FastLst loads the system excessively, so that other
OS/2 tasks don't perform properly (OS/2 32 bit version).
Solution: Use the "Priority Idle" statement in the configuration
file, so that FastLst receives its time slices only
when other processes with higher priority are idle.
Problem: I run FastLst while the communications are off, so I
would like it to run as fast as possible even if it is
in the background and other task are active (OS/2 32
bit version).
Solution: Use the "Priority High 31" statement in the
configuration file, so that FastLst receives the
maximum priority for "non time-critical" processes.
Problem: I cannot find the solution to my problems.
Solution: - Try linking the APWORKS support echo
- Try asking your local supporter
- Try asking the author directly
You can find the addresses in the ReadMe.1st file.
S H A R E W A R E
If you like this program and continue using it, you should pay
the author for his work, as per the ShareWare concept of
distribution.
Please see LICENSE.DOC and REGISTER.DOC for information.
Thank you for your interest in FastLst.